www.gusucode.com > VC++ 信息加密聊天源代码-源码程序 > VC++ 信息加密聊天源代码-源码程序\code\SecChat\ColorComboBox.cpp
// ColorComboBox.cpp : implementation file // download by http://www.NewXing.com #include "stdafx.h" #include "ColorComboBox.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CColorComboBox CColorComboBox::CColorComboBox() { m_clrText=RGB(0,0,0); m_clrBackGround=RGB(255,255,255); } CColorComboBox::~CColorComboBox() { if(m_szaryItem.GetSize()>0) { m_szaryItem.RemoveAll(); } if(m_aryColorBackGround.GetSize()>0) { m_aryColorBackGround.RemoveAll(); } if(this->m_aryColorText.GetSize()>0) { m_aryColorText.RemoveAll(); } } BEGIN_MESSAGE_MAP(CColorComboBox, CComboBox) //{{AFX_MSG_MAP(CColorComboBox) // NOTE - the ClassWizard will add and remove mapping macros here. //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CColorComboBox message handlers void CColorComboBox::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct) { // TODO: Add your code to draw the specified item CDC dc; dc.Attach(lpDrawItemStruct->hDC); CRect rect(&(lpDrawItemStruct->rcItem)); int nIndex=lpDrawItemStruct->itemID; COLORREF clrBackGround; if(nIndex==-1) { clrBackGround=RGB(255,255,255); } else if(nIndex<=m_aryColorBackGround.GetSize()) { clrBackGround=(COLORREF)m_aryColorBackGround.GetAt(nIndex); } else { clrBackGround= (COLORREF)m_aryColorBackGround.GetAt(m_aryColorBackGround.GetUpperBound()); } CBrush brhBack(clrBackGround); rect.InflateRect(-1,-1); dc.FillRect(&rect,&brhBack); if(lpDrawItemStruct->itemState&ODS_SELECTED) { dc.DrawFocusRect(&rect); } COLORREF clrText; if(nIndex==-1) { clrText=RGB(0,0,0); } else if(nIndex<=m_aryColorText.GetSize()) { clrText=(COLORREF)m_aryColorText.GetAt(nIndex); } else { clrText= (COLORREF)m_aryColorText.GetAt(m_aryColorText.GetUpperBound()); } dc.SetBkMode(TRANSPARENT); dc.SetTextColor(clrText); if(nIndex!=-1) dc.DrawText(m_szaryItem.GetAt(nIndex),&rect,DT_SINGLELINE|DT_LEFT|DT_VCENTER); CBrush brhFrame(RGB(0,0,0)); dc.FrameRect(rect, &brhFrame); dc.Detach(); } int CColorComboBox::AddString(LPCTSTR lpszString) { m_aryColorBackGround.Add((COLORREF)m_clrBackGround); m_aryColorText.Add((COLORREF)m_clrText); m_szaryItem.Add(lpszString); int iResult=CComboBox::AddString(""); return iResult; } void CColorComboBox::SetTextColor(COLORREF clrText) { m_clrText=clrText; } void CColorComboBox::SetBckGndColor(COLORREF clrBckGnd) { m_clrBackGround=clrBckGnd; }